package iot.wlink.network.devices.manager;

import iot.wlink.network.devices.shadows.DeviceShadow;
import iot.wlink.network.payload.up.PointValue;

import java.util.Map;

/**
 * @author : willian fu
 * @date : 2021/8/21
 */
public interface ShadowManager {

    /**
     * 获取设备影子
     * @param uid 设备uid
     * @return 影子
     */
    DeviceShadow getShadow(String uid);

    /**
     * 更新设备影子
     * @param uid 设备uid
     * @param shadow 新的影子
     */
    void updateShadow(String uid, DeviceShadow shadow);

    /**
     * 创建设备影子，初始化影子
     * @param uid 设备uid
     */
    DeviceShadow createShadow(String uid);

    /**
     * 删除设备影子
     * @param uid 设备uid
     */
    void deleteShadow(String uid);

    /**
     * 更新设备影子真实值
     * @param actual 上报的值
     */
    void updateShadowActual(String uid, Map<String, PointValue> actual);

    /**
     * 更新设备影子期望值
     * @param actual 期望的值
     */
    void updateShadowDesired(String uid, Map<String, PointValue> actual);
}
